import { reqGoodsInfo,reqAddOrUpdateCart } from '@/api';
// 游客身份模块uuid--生成随机字符串
import { getUUID } from '@/utils/uuid_token';
const  state = {
     //商品详情的数据
     goodInfo: {},
    //  游客临时身份
    uuid_token:getUUID()
}
const mutations = {
    GETGOODINFO(state,goodInfo){
        state.goodInfo = goodInfo
    } 
}
const actions = {
      //商品详情请求，需要携带商品ID
 async   getGoodsInfo({commit},skuid){
       let result =   await reqGoodsInfo(skuid)
       if (result.code == 200) {
        commit('GETGOODINFO', result.data);
   }
    },

  //加入购物车|将来修改商品个数的地方,右侧是载荷对象【两个K,两个V】
  async addOrUpdateCart({ state, commit, dispatch }, { skuid, skuNum }) {
    //底下即为：加入购物车(修改商品个数)的请求,参数顺序不能瞎写,给服务器存储数据
    let result = await reqAddOrUpdateCart(skuid,skuNum);

    if (result.code == 200) {
         //如果加入购物车成功,返回promise即为成功
         console.log(result);
         return "ok";
    } else {
         //如果加入购物车失败，返回失败的Promise
         return Promise.reject();
       
    }
    //思考问题:目的是前端把商品的ID、商品个数传递给服务器【人家服务器，兄弟我收到了,没有额外的给你传递其余的数据】
    //想的问题:豪哥不对，咱们以前经常commit条件mutation存储数据【没有返回数据，没有数据可存储】,没有需要提交mutation让仓库
    //存储数据
    //第一种解决方案code,完全可以！！！！

}
}
const getters = {

    categoryView(state){
    // 比如：state.goodInfo初始状态空对象，空对象的ategoryView属性值是undefined
        return state.goodInfo.categoryView || {};
    },
      //商品信息的数据
    skuInfo() {
        return state.goodInfo.skuInfo || {}
   },
   //商品销售属性列表的数据
   spuSaleAttrList() {
        return state.goodInfo.spuSaleAttrList || []
   }
}

export default {
    state,
    mutations,
    actions,
    getters
}